package easy;

/**
 * @Author YNA-User
 * @CreateDate 2020/4/14 下午 2:24
 * @TODO 编写一个函数来查找字符串数组中的最长公共前缀。
 * <p>
 * 如果不存在公共前缀，返回空字符串 ""。
 * <p>
 * 示例 1:
 * <p>
 * 输入: ["flower","flow","flight"]
 * 输出: "fl"
 * 示例 2:
 * <p>
 * 输入: ["dog","racecar","car"]
 * 输出: ""
 * 解释: 输入不存在公共前缀。
 * 说明:
 * <p>
 * 所有输入只包含小写字母 a-z 。
 */
public class SolutionLongestCommonPrefix {

    public static void main(String[] args) {
        args = new String[]{"flower", "flow", "fkight"};
        System.out.println("longestCommonPrefix(args) = " + longestCommonPrefix(args));
    }

    /**
     * 思路: 根据 startsWith() 判断是否有相同的前缀, 逐步对 字符串进行截取,
     * 当通过 startsWith() 方法,且字符串长度为 1 时, 说明字符串没有相同的前缀, return "";
     * @param strs
     * @return
     */
    private static String longestCommonPrefix(String[] strs) {

        if (strs == null || strs.length == 0)
            return "";
        String reg = strs[0];
        for (String str : strs) {
            while (!str.startsWith(reg)) {
                if (reg.length() == 1) {
                    return "";
                }
                reg = reg.substring(0, reg.length() - 1);
            }
        }
        return reg;
    }
}
